home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / host.h < prev    next >
C/C++ Source or Header  |  1992-06-05  |  4KB  |  112 lines

  1. /*
  2.  * host.h --
  3.  *    Header file for users of the Host_ functions. These functions
  4.  *    access a database of all Sprite hosts on the local network, giving
  5.  *    various information about the host that is needed to communicate
  6.  *    with it in various ways...
  7.  *
  8.  * Copyright (c) 1987 by the Regents of the University of California
  9.  * Permission to use, copy, modify, and distribute this
  10.  * software and its documentation for any purpose and without
  11.  * fee is hereby granted, provided that the above copyright
  12.  * notice appear in all copies.  The University of California
  13.  * makes no representations about the suitability of this
  14.  * software for any purpose.  It is provided "as is" without
  15.  * express or implied warranty.
  16.  *
  17.  *    "$Header: /sprite/src/lib/include/RCS/host.h,v 1.9 92/06/05 12:36:11 voelker Exp $ SPRITE (Berkeley)"
  18.  */
  19.  
  20. #ifndef _HOST
  21. #define _HOST
  22.  
  23. #ifndef _TYPES
  24. #include <sys/types.h>
  25. #endif
  26. #ifndef _IN
  27. #include <netinet/in.h>
  28. #endif
  29.  
  30. #include <sys/stat.h>
  31. #include <net.h>
  32.  
  33. /*
  34.  * A host information file contains two types of lines.  The
  35.  * first type of line describes a Sprite host:
  36.  *
  37.  *        <spriteID> <machType> <fullname> <aliases>
  38.  *
  39.  * The second type of line describes the types of networks that
  40.  * the host is connected to:
  41.  *
  42.  *        <netType> <netAddr> <inetAddr> 
  43.  *
  44.  * The fields are as follows:
  45.  *
  46.  *    spriteID        The Sprite ID for the host (small number)
  47.  *    machType        The machine type.  This string value is used
  48.  *                when expanding $MACHINE in pathnames.
  49.  *    fullname        The official name for the machine.
  50.  *    aliases              Other names for the machine.
  51.  *
  52.  *    netType         Type of local network by which the machine is
  53.  *                      connected.  Currently, only `ether', `ultra',
  54.  *                      and `fddi' are understood.
  55.  *    netAddr              Address for the local network of the given type.
  56.  *    inetAddr          The internet address of the network interface
  57.  *                          of the host.
  58.  *
  59.  * Each network interface has a given Internet address, so the Internet
  60.  * address can uniquely identify a specific network interface.  But,
  61.  * a host may have multiple network interfaces, so an Internet address
  62.  * does not uniquely identify a host.
  63.  *
  64.  * After each line that defines a Sprite host follow the lines describing
  65.  * the networks that the host is connected to.
  66.  *
  67.  */
  68.  
  69. /*
  70.  * Should be the same as NET_MAX_INTERFACES in netTypes.h
  71.  */
  72. #define HOST_MAX_INTERFACES         3
  73.  
  74. /*
  75.  * A Host_NetInt structure defines the internet and network addresses
  76.  * for a network interface on a host. 
  77.  */
  78. typedef struct Host_NetInt {
  79.     Net_InetAddress     inetAddr;   /* Internet Address */
  80.     Net_Address         netAddr;    /* Address of network interface */
  81. } Host_NetInt;
  82.  
  83. /*
  84.  * A Host_Entry structure contains the name, etc., of a host, plus
  85.  * the addresses of its network interfaces.  Empty interfaces are
  86.  * denoted by having nets[].netAddr.type set to NET_ADDRESS_NONE.
  87.  */
  88. typedef struct {
  89.     char              *name;      /* Primary name */
  90.     char              **aliases;  /* Other names */
  91.     int                  id;        /* Sprite ID */
  92.    char            *machType;  /* Machine type, i.e "sun3", "spur" */
  93.    int            numNets;    /* Number of network interfaces. */
  94.    Host_NetInt          nets[HOST_MAX_INTERFACES];
  95.                                     /* Internet and physical address for
  96.                      * each possible network interface */
  97. } Host_Entry;
  98.  
  99. /*
  100.  * Accessor functions
  101.  */
  102. Host_Entry *    Host_ByID();        /* Find host entry by Sprite ID */
  103. Host_Entry *    Host_ByInetAddr();    /* Find by Internet address */
  104. Host_Entry *    Host_ByName();        /* Find entry by name */
  105. Host_Entry *    Host_ByNetAddr();    /* Find by LAN address */
  106. void        Host_End();        /* Close host description file */
  107. Host_Entry *    Host_Next();        /* Retrieve next entry in file */
  108. int        Host_SetFile();        /* Change file to read for info */
  109. int        Host_Start();        /* Open host description file */
  110.  
  111. #endif /* _HOST */
  112.